perm filename PROTOC.XGP[DLN,MRC]5 blob
sn#418204 filedate 1979-02-10 generic text, type T, neo UTF8
/LMAR=0/XLINE=3/FONT#0=BASL30/FONT#1=BASI30/FONT#2=BUCK75/FONT#3=CRTURZ/FONT#4=BAXL40/FONT#5=BAXI35/FONT#6=FIX25
␈↓ ↓X␈↓␈↓∧First Edition
␈↓ ↓X␈↓∧␈↓β␈↓ ¬tC
␈↓ ↓X␈↓β␈↓α␈↓ βWDIALNET PROTOCOLS
␈↓ ↓X␈↓α␈↓↓␈↓ ∧}Mark Crispin ␈↓and ␈↓↓Ignacio Zabala␈↓
␈↓ ↓X␈↓␈↓ α(These␈α∀protocols␈α∀are␈α∀being␈α∀developed␈α∀as␈α∀part␈α∀of␈α∀the␈α∀␈↓↓Dialnet␈↓␈α∀project␈α∀at␈α∃the␈α∀Stanford
␈↓ ↓X␈↓University␈α∞Arti≡cial␈α∞Intelligence␈α∞Laboratory␈α∞supported␈α∞by␈α∞NSF␈α∞grant␈α∞MCS␈α∞77-02080␈α∞with␈α
John
␈↓ ↓X␈↓McCarthy␈α⊃as␈α⊂Principal␈α⊃Investigator.␈α⊃ The␈α⊂project␈α⊃is␈α⊂described␈α⊃in␈α⊃a␈α⊂paper␈α⊃available␈α⊃online␈α⊂at
␈↓ ↓X␈↓Arpanet host SU-AI as DIALNE[DIA,JMC].
␈↓ ↓X␈↓␈↓ α(This is PROTOC.PUB[DLN,MRC] at Arpanet host SU-AI (octal 13, decimal 11.).
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ¬␈␈↓¬Conventions
␈↓ ↓X␈↓␈↓ α(All␈αnumbers␈α
without␈αan␈αexplicit␈α
base␈α(ie,␈αoctal␈α
or␈αdecimal)␈αspeci≡ed␈α
should␈αbe␈αinterpreted␈α
as
␈↓ ↓X␈↓octal unless the number is immediately followed by a dot, in which case it is decimal.
␈↓ ↓X␈↓␈↓ α(All␈αthree-digit␈αoctal␈αnumbers␈αshould␈αbe␈αinterpreted␈αas␈αrepresenting␈αan␈α8.-bit␈αbyte,␈α
with␈αbits
␈↓ ↓X␈↓right-justi≡ed␈α⊃within␈α⊃the␈α⊃number␈α∩(ie,␈α⊃from␈α⊃000␈α⊃to␈α⊃377).␈α∩ Bytes␈α⊃are␈α⊃expressed␈α⊃in␈α⊃the␈α∩form␈α⊃as
␈↓ ↓X␈↓returned by the modem (ie, lsb ≡rst in the data stream).
␈↓ ↓X␈↓␈↓ α(All␈αsix-digit␈αoctal␈αnumbers␈αshould␈αbe␈αinterpreted␈αas␈αrepresenting␈αa␈α16.-bit␈αdouble-byte,␈αwith
␈↓ ↓X␈↓bits␈αright-justi≡ed␈αwithin␈αthe␈αnumber␈α(ie,␈αfrom␈α000000␈αto␈α177777).␈α Double-bytes␈αare␈αexpressed␈αin
␈↓ ↓X␈↓the␈αform␈αreturned␈αby␈αthe␈αmodem␈α(ie,␈αlow␈αorder␈αbyte␈αand␈αlsb␈α≡rst);␈αie,␈α010041␈αis␈αtransmitted␈αas␈α041
␈↓ ↓X␈↓020.
␈↓ ↓X␈↓␈↓ εP1␈↓ X
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ε∨␈↓¬Preface
␈↓ ↓X␈↓␈↓ α(␈↓↓␈↓ β7"Aren't you glad you use Dialnet? Don't you wish everybody did?"␈↓
␈↓ ↓X␈↓␈↓ α(␈↓↓Dialnet␈↓␈α∃provides␈α∃a␈α∃capability␈α∃for␈α∀geographically␈α∃separated␈α∃computers,␈α∃called␈α∃␈↓↓hosts␈↓,␈α∀to
␈↓ ↓X␈↓communicate␈α⊂with␈α⊂each␈α⊃other.␈α⊂ The␈α⊂host␈α⊃computers␈α⊂typically␈α⊂di≥er␈α⊃from␈α⊂one␈α⊂another␈α⊃in␈α⊂type,
␈↓ ↓X␈↓speed,␈α
word␈α
length,␈αoperating␈α
system,␈α
etc.␈α Each␈α
computer␈α
utilizes␈α␈↓↓Dialnet␈↓␈α
via␈α
ordinary␈αphone␈α
lines
␈↓ ↓X␈↓and special modems.
␈↓ ↓X␈↓␈↓ α(As␈αin␈α
many␈αother␈αdata␈α
communication␈αschemes,␈αa␈α
layered␈αapproach␈αhas␈α
been␈αselected␈αin␈α
the
␈↓ ↓X␈↓design␈α
of␈αthe␈α
Dialnet␈αprotocols.␈α
Each␈αlayer␈α
sees␈αthe␈α
immediate␈αlower␈α
layer␈αas␈α
a␈α"black␈α
box"␈αand
␈↓ ↓X␈↓need␈α∞not␈α∞be␈α∞concerned␈α∞about␈α∞its␈α∞internal␈α∞structure.␈α
The␈α∞lowest␈α∞layer␈α∞is␈α∞the␈α∞line␈α∞protocol␈α∞of␈α
the
␈↓ ↓X␈↓modems,␈α∞which␈α∞transfers␈α∞data␈α∞bytes␈α∞over␈α∂the␈α∞phone␈α∞lines␈α∞and␈α∞does␈α∞necessary␈α∞byte␈α∂framing,␈α∞but
␈↓ ↓X␈↓otherwise␈α∂has␈α∞no␈α∂error␈α∞correction␈α∂facilities.␈α∂ At␈α∞this␈α∂writing,␈α∞the␈α∂modem␈α∞type␈α∂used␈α∂are␈α∞VADIC
␈↓ ↓X␈↓VA3405 1200/1200 baud full duplex asyncronous modems.
␈↓ ↓X␈↓␈↓ α(Next␈α∂is␈α∂the␈α∂␈↓↓host-host␈↓␈α∂layer,␈α∂which␈α∂breaks␈α∂the␈α∂data␈α∂stream␈α∂into␈α∂chunks,␈α∂or␈α⊂␈↓↓packets␈↓.␈α∂ Each
␈↓ ↓X␈↓packet␈α∂is␈α∂checksummed␈α∂and␈α∂sequenced,␈α∂so␈α∂that␈α∂retransmission␈α∂can␈α∂be␈α∂done␈α∂on␈α∂a␈α⊂packet␈α∂whose
␈↓ ↓X␈↓previous␈α∂transmission␈α∂was␈α∂corrupted␈α∂in␈α∂some␈α∂way.␈α∂ Many␈α∂systems␈α∂may␈α∂want␈α∂to␈α∂implement␈α∂this
␈↓ ↓X␈↓layer␈αin␈αtheir␈αoperating␈αsystem,␈αso␈αall␈α␈↓↓Dialnet␈↓␈αuser␈αprograms␈αwill␈αbehave␈αat␈αthis␈αlevel␈αin␈αthe␈αsame
␈↓ ↓X␈↓manner.
␈↓ ↓X␈↓␈↓ α(Finally␈α∞comes␈α∞the␈α∞user-level␈α∞protocols.␈α∞ This␈α∞includes␈α∞≡le␈α∞transfer,␈α∞mail,␈α∞linking,␈α∞telnetting,
␈↓ ↓X␈↓etc.␈α
These␈α
are␈α
user-level␈α
programs,␈α
and␈α
␈↓↓Dialnet␈↓␈α
has␈α
been␈α
designed␈α
with␈α
enough␈α
∨exibility␈αto␈α
allow
␈↓ ↓X␈↓for users to create private protocols of their own.
␈↓ ↓X␈↓␈↓ α(Questions concerning ␈↓↓Dialnet␈↓ protocols should be addressed to:
␈↓ ↓X␈↓␈↓ α(␈↓↓␈↓ ¬}Mark Crispin
␈↓ ↓X␈↓↓␈↓ α(␈↓ ¬
Arti≡cial Intelligence Laboratory
␈↓ ↓X␈↓↓␈↓ α(␈↓ ¬$Stanford, California 94305
␈↓ ↓X␈↓↓␈↓ α(␈↓ ¬KPhone: (415) 491-4712
␈↓ ↓X␈↓↓␈↓ α(␈↓ ¬EArpanet: MRC@SU-AI␈↓
␈↓ ↓X␈↓␈↓ α(Copies␈α⊂of␈α⊂all␈α∂correspondence␈α⊂should␈α⊂be␈α⊂sent␈α∂to␈α⊂John␈α⊂McCarthy␈α∂and␈α⊂Les␈α⊂Earnest␈α⊂at␈α∂the
␈↓ ↓X␈↓above US mail address or via Arpanet mail to JMC@SU-AI and LES@SU-AI.
␈↓ ↓X␈↓␈↓ α(It␈α∞is␈α∞the␈α∞author's␈α∞intent␈α∞that␈α∂these␈α∞protocols␈α∞are␈α∞both␈α∞simple␈α∞in␈α∞their␈α∂implementation␈α∞and
␈↓ ↓X␈↓powerful␈αin␈αtheir␈αoperation.␈α
Certainly␈αa␈αmajor␈αdesign␈α
consideration␈αwas␈αto␈αdesign␈α
protocols␈αthat
␈↓ ↓X␈↓ordinary mortals could implement on their systems.
␈↓ ↓X␈↓␈↓ εP2␈↓ X
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ¬G␈↓¬Host-Host Protocol
␈↓ ↓X␈↓␈↓ α(All␈αdata␈αis␈αsent␈αin␈αthe␈αform␈αof␈αpackets,␈αwhich␈αcontain␈αa␈α␈↓↓packet␈αheader␈↓,␈αoptional␈α␈↓↓data␈↓,␈αand␈αa
␈↓ ↓X␈↓␈↓↓packet␈αtrailer␈↓.␈α The␈α
packet␈αheader␈αserves␈α
to␈αidentify␈αthe␈αtype␈α
of␈αpacket,␈αthe␈α
size␈αof␈αthe␈α
data␈αarea
␈↓ ↓X␈↓and␈α∀provides␈α∪information␈α∀necessary␈α∪for␈α∀data␈α∀∨ow␈α∪and␈α∀error␈α∪correction.␈α∀ The␈α∀packet␈α∪trailer
␈↓ ↓X␈↓provides␈α
a␈α
checksum␈α
for␈α
the␈α
packet.␈α
Packets␈α
are␈α
framed␈α
at␈α
each␈α
end␈α
with␈α
a␈α
␈↓↓start␈α
of␈α
packet␈↓␈α
and␈α
an
␈↓ ↓X␈↓␈↓↓end of packet␈↓ marker.
␈↓ ↓X␈↓␈↓ α(The␈αbytes␈α
which␈αindicate␈α
start␈αof␈α
packet␈αare␈α
called␈αSOP,␈α
and␈αconsist␈α
of␈αASCII␈α
DLE␈α(220)
␈↓ ↓X␈↓followed␈αby␈αSTX␈α(202);␈αsimilarly,␈αthe␈αbytes␈αwhich␈αindicate␈αend␈αof␈αpacket␈αare␈αcalled␈αEOP,␈αand␈αare
␈↓ ↓X␈↓ASCII␈αDLE␈αfollowed␈αby␈αETX␈α(203).␈α Note␈αthat␈αthe␈α200␈αbit␈αis␈α␈↓↓on␈↓␈αin␈αDLE,␈αSTX,␈αand␈αETX.␈α
If␈αa
␈↓ ↓X␈↓220␈α∞byte␈α∞is␈α∞to␈α∞be␈α∞sent,␈α∞it␈α∞is␈α∞quoted␈α∞by␈α∞being␈α∞sent␈α∞twice.␈α∞ DLE␈α∞followed␈α∞by␈α∞anything␈α∞other␈α∞than
␈↓ ↓X␈↓STX,␈α⊃ETX,␈α⊃or␈α∩DLE␈α⊃is␈α⊃currently␈α∩unde≡ned;␈α⊃any␈α⊃such␈α∩combination␈α⊃when␈α⊃received␈α∩should␈α⊃be
␈↓ ↓X␈↓discarded. 020, 002, and 003 are ␈↓↓not␈↓ considered to be DLE, STX, and ETX.
␈↓ ↓X␈↓␈↓ α(There are two types of packets in ␈↓↓Dialnet␈↓: ␈↓↓controlled␈↓ and ␈↓↓uncontrolled␈↓ packets.
␈↓ ↓X␈↓␈↓ α(Controlled␈αpackets␈αhave␈αa␈α
packet␈αnumber,␈αwhich␈αstarts␈αat␈α
001␈αand␈αis␈αincremented␈αwith␈α
each
␈↓ ↓X␈↓packet␈αsent.␈α The␈αpacket␈αnumber␈αwraps␈αaround␈αto␈α001␈αfrom␈α377.␈α Up␈αto␈αtwo␈α(the␈αdefault␈αwindow
␈↓ ↓X␈↓size)␈α
packets␈α
may␈α
be␈α
sent␈α
before␈α
an␈α
acknowledgement␈α
is␈α
received␈α
for␈α
(at␈α
least)␈α
the␈α
≡rst␈α
packet.␈α
The
␈↓ ↓X␈↓window␈α∞begins␈α
with␈α∞the␈α
≡rst␈α∞unacknowledged␈α
packet;␈α∞therefore␈α
the␈α∞window␈α
size␈α∞is␈α∞an␈α
allocation
␈↓ ↓X␈↓which is used up as packets are sent and is given back as packets are acknowledged.
␈↓ ↓X␈↓␈↓ α(Uncontrolled␈α∂packets␈α⊂(ie,␈α∂NOP,␈α⊂NAK,␈α∂and␈α⊂ERR)␈α∂have␈α⊂a␈α∂packet␈α⊂number␈α∂of␈α⊂000.␈α∂ These
␈↓ ↓X␈↓packets␈α
do␈α
not␈α
count␈α
against␈α
the␈α
window,␈α
and␈α
are␈α
not␈α
remembered␈α
for␈α
retransmission␈α
after␈α
they
␈↓ ↓X␈↓are␈α∂sent.␈α∂ Therefore␈α∂they␈α∞are␈α∂lost␈α∂if␈α∂an␈α∞error␈α∂occurs␈α∂while␈α∂they␈α∞are␈α∂being␈α∂transmitted.␈α∂ This␈α∞is
␈↓ ↓X␈↓because␈α
what␈α
information␈α∞they␈α
convey␈α
is␈α∞generally␈α
timing-critical;␈α
if␈α∞the␈α
packet␈α
was␈α∞lost␈α
nothing
␈↓ ↓X␈↓would be gained by sending it again.
␈↓ ↓X␈↓␈↓ α(It␈α
is␈α
a␈α
packet␈αnumber␈α
of␈α
000␈α
and␈αnot␈α
the␈α
opcode␈α
which␈αspeci≡es␈α
a␈α
packet␈α
as␈αbeing␈α
controlled
␈↓ ↓X␈↓or␈α∂uncontrolled.␈α⊂ However,␈α∂it␈α⊂is␈α∂a␈α⊂safe␈α∂generalization␈α⊂to␈α∂state␈α⊂that␈α∂NOP,␈α⊂NAK,␈α∂and␈α⊂ERR␈α∂are
␈↓ ↓X␈↓"always" uncontrolled and the other opcodes are "always" controlled.
␈↓ ↓X␈↓␈↓ α(A␈α∞properly␈α∞received␈α∞controlled␈α
packet␈α∞must␈α∞be␈α∞acknowledged␈α
for␈α∞the␈α∞sender␈α∞to␈α∞know␈α
that
␈↓ ↓X␈↓the␈α∞receiver␈α∞successfully␈α
received␈α∞the␈α∞packet␈α∞and␈α
to␈α∞release␈α∞that␈α
packet␈α∞from␈α∞the␈α∞window.␈α
Each
␈↓ ↓X␈↓packet␈αhas␈α
an␈αacknowledgement␈αbyte␈α
which␈αis␈α
used␈αfor␈αthis␈α
purpose.␈α This␈αbyte␈α
in␈αa␈α
packet␈αsent
␈↓ ↓X␈↓by␈αthe␈αreceiver␈αcontains␈αthe␈αnumber␈α
of␈αthe␈αhighest␈αsuccessfully␈αreceived␈αpacket.␈α Acknowledging␈α
a
␈↓ ↓X␈↓packet␈αimplies␈αacknowledging␈αall␈αunacknowledged␈αpackets␈αwith␈αlower␈αpacket␈αnumbers,␈αtherefore␈αa
␈↓ ↓X␈↓successfully␈α∞received␈α∞packet␈α∞can␈α∞merely␈α∞set␈α∂the␈α∞acknowledgement␈α∞byte␈α∞for␈α∞the␈α∞next␈α∞packet␈α∂to␈α∞be
␈↓ ↓X␈↓sent without actually forcing a packet to be sent.
␈↓ ↓X␈↓␈↓ α(Controlled␈α∞packets␈α∞must␈α∞be␈α∞received␈α∞in␈α∞sequence.␈α∞ If␈α∞the␈α∞receiver␈α∞receives␈α∞a␈α∞packet␈α∂it␈α∞has
␈↓ ↓X␈↓already␈α
acknowledged␈α
it␈α
should␈α
discard␈α
it.␈α Packets␈α
which␈α
have␈α
a␈α
sequence␈α
number␈α
higher␈αthan
␈↓ ↓X␈↓the␈α
expected␈α
packet␈α
and␈α
packets␈α
with␈α
incorrect␈α
checksum␈α
should␈α
be␈α
discarded,␈α
and␈α
a␈α
NAK␈α
sent
␈↓ ↓X␈↓for␈α∞the␈α∞expected␈α∞packet.␈α∞ In␈α∞the␈α∞event␈α∞of␈α
a␈α∞framing␈α∞error,␈α∞the␈α∞receiver␈α∞should␈α∞discard␈α∞all␈α
input
␈↓ ↓X␈↓␈↓ εP3␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓until␈α⊂an␈α⊂SOP␈α⊃is␈α⊂encountered␈α⊂in␈α⊃the␈α⊂input␈α⊂stream.␈α⊂ If␈α⊃a␈α⊂packet␈α⊂is␈α⊃discarded␈α⊂for␈α⊂being␈α⊃out␈α⊂of
␈↓ ↓X␈↓sequence,␈αits␈αacknowledgement␈α
byte␈αshould␈αstill␈αbe␈α
processedd,␈αotherwise␈αan␈αacknowledgement␈α
may
␈↓ ↓X␈↓be unnecessarily missed.
␈↓ ↓X␈↓␈↓ α(If␈α
a␈αhost␈α
has␈α
nothing␈αto␈α
transmit␈α
at␈αthe␈α
current␈α
time,␈αit␈α
is␈α
recommended␈αthat␈α
it␈α
send␈αa␈α
NOP,
␈↓ ↓X␈↓repeated␈α∂every␈α∞≡ve␈α∂seconds␈α∞or␈α∂so.␈α∞ This␈α∂not␈α∂only␈α∞keeps␈α∂this␈α∞part␈α∂of␈α∞the␈α∂data␈α∞link␈α∂up,␈α∂but␈α∞also
␈↓ ↓X␈↓assures␈α
that␈α
the␈α
receiver␈α
is␈α
continuing␈α
to␈α
receive␈α
up␈α
to␈α
date␈α
acknowledgements.␈α
However,␈α
if␈α
the
␈↓ ↓X␈↓sender␈α∩has␈α∩packets␈α∩waiting␈α∩to␈α∩be␈α∪acknowledged,␈α∩it␈α∩should␈α∩retransmit␈α∩the␈α∩last␈α∩packet␈α∪on␈α∩the
␈↓ ↓X␈↓acknowledgement␈α
pending␈α
list.␈α
This␈α
is␈α
to␈α
avoid␈α
a␈α
possible␈α
deadlock␈α
which␈α
occurs␈α
when␈α
the␈αlast
␈↓ ↓X␈↓packet before the sending goes idle is lost.
␈↓ ↓X␈↓␈↓ α(In␈α␈↓↓Dialnet␈↓,␈αthe␈αwindow␈αis␈α␈↓↓optional␈↓;␈αin␈αparticular,␈αan␈αimplementation␈αwhich␈αuses␈αthe␈αwindow
␈↓ ↓X␈↓should␈αnot␈αget␈αupset␈αbecause␈αthe␈αforeign␈αhost␈αdisobeys␈αit␈α(it␈αcan␈αof␈αcourse␈αneglect␈αto␈αacknowledge
␈↓ ↓X␈↓packets␈α↔which␈α↔cause␈α↔data␈α↔overruns␈α_and␈α↔force␈α↔them␈α↔to␈α↔be␈α↔retransmitted).␈α_ However,␈α↔any
␈↓ ↓X␈↓implementation␈α∂which␈α∂is␈α∂trying␈α∂to␈α∂be␈α∂reasonably␈α∂e≠cient␈α∂should␈α∂do␈α∂something␈α∂about␈α∂handling
␈↓ ↓X␈↓windows and telling the foreign host what sort of window size it can live with.
␈↓ ↓X␈↓␈↓ α(There␈αis␈αno␈αo≠cial␈αtimeout␈αfor␈αdeciding␈αwhether␈αa␈αhost␈αis␈αstill␈αalive␈αor␈αwhether␈αthe␈αphone
␈↓ ↓X␈↓connection is poor enough to be unusable. Each implementor must decide these for him/herself.
␈↓ ↓X␈↓␈↓ α(The␈α⊂packet␈α⊂checksum␈α⊃algorithm␈α⊂used␈α⊂is␈α⊃the␈α⊂result␈α⊂of␈α⊃a␈α⊂conversation␈α⊂with␈α⊃Knuth.␈α⊂ The
␈↓ ↓X␈↓checksum␈αis␈α16.␈αbits␈αlong␈αand␈αall␈αof␈αthe␈αpacket␈αheader␈αvariables␈αand␈αthe␈αentire␈αdata␈αarea.␈α It␈αdoes
␈↓ ↓X␈↓NOT␈α
include␈α
the␈α
packet␈α
trailer␈α
or␈αthe␈α
SOP/EOP␈α
packet␈α
framing␈α
codes.␈α
Note␈α
that␈αframing␈α
checks
␈↓ ↓X␈↓happen ␈↓↓before␈↓ the checksum check. The algorithm is: (all numbers should be read as octal)
␈↓ ↓X␈↓␈↓ α(checksum := 1;
␈↓ ↓X␈↓␈↓ α(while newchar do
␈↓ ↓X␈↓␈↓ α( checksum := (checksum * 013215 + newchar) & 177777;
␈↓ ↓X␈↓␈↓ α(In PDP-10 assembly code, this would be:
␈↓ ↓X␈↓ε␈↓ α(; CHKBYT adds a byte to the checksum in SUM.
␈↓ ↓X␈↓ε␈↓ α(; At the beginning of each packet SUM is
␈↓ ↓X␈↓ε␈↓ α(; initialized to 1.
␈↓ ↓X␈↓ε␈↓ α(; Call: MOVE CHR,<byte from data stream>
␈↓ ↓X␈↓ε␈↓ α(; PUSHJ P,CHKBYT
␈↓ ↓X␈↓ε␈↓ α(; <return>
␈↓ ↓X␈↓ε␈↓ α(CHKBYT: IMULI SUM,013215
␈↓ ↓X␈↓ε␈↓ α( ADDI SUM,(CHR)
␈↓ ↓X␈↓ε␈↓ α( ANDI SUM,177777
␈↓ ↓X␈↓ε␈↓ α( POPJ P,
␈↓ ↓X␈↓␈↓ α(There␈αis␈αalways␈αat␈αleast␈αone␈αword␈αin␈αthe␈αdata␈αpart␈αof␈αthe␈αpacket.␈α The␈αdata␈αpart␈αsize␈αrefers
␈↓ ↓X␈↓to␈α
the␈α
number␈α
of␈α
␈↓↓additional␈↓␈α
words␈α
in␈α
the␈α
data␈α∞part.␈α
Hence␈α
the␈α
data␈α
part␈α
can␈α
be␈α
␈↓↓from␈α
1␈α∞to␈α
256␈↓
␈↓ ↓X␈↓data␈α
bytes␈α
long.␈α
This␈α
means␈α
that␈α
the␈α
"data␈α
size"␈α
≡eld␈α
in␈α
the␈α
packet␈α
header␈α
is␈α
actually␈α
␈↓↓one␈αless␈↓␈α
than
␈↓ ↓X␈↓the actual data size.
␈↓ ↓X␈↓␈↓ εP4␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(The␈α∞motivation␈α∞for␈α∞this␈α∞is␈α∞that␈α∞a␈α∞power␈α∞of␈α∞two␈α∞is␈α∞a␈α∞convenient␈α∞unit␈α∞of␈α∞storage␈α∞for␈α
many
␈↓ ↓X␈↓systems.␈α
In␈α
addition,␈α
many␈α
implementations␈α
will␈α
≡nd␈α∞it␈α
convenient␈α
to␈α
pack␈α
four␈α
data␈α
bytes␈α∞in␈α
a
␈↓ ↓X␈↓single␈α
storage␈α
word.␈α
With␈α
framing␈α
and␈α
DLE␈α
doubling␈α
stripped,␈α
this␈α
means␈α
that␈α
the␈α
packet␈α
header
␈↓ ↓X␈↓will␈α
be␈α
exactly␈α
one␈α∞storage␈α
word,␈α
and␈α
the␈α∞data␈α
part␈α
will␈α
begin␈α∞on␈α
a␈α
storage␈α
word␈α∞boundary.␈α
In
␈↓ ↓X␈↓addition,␈α⊃the␈α⊃data␈α⊃part␈α⊂of␈α⊃a␈α⊃maximum-size␈α⊃packet␈α⊂will␈α⊃also␈α⊃end␈α⊃on␈α⊂a␈α⊃storage␈α⊃word.␈α⊃ This␈α⊂is
␈↓ ↓X␈↓signi≡cant␈αfor␈αmany␈αsystems␈αin␈αterms␈αof␈αbu≥ering;␈αwhether␈αa␈αbyte-by-byte␈αcopy␈αmust␈αbe␈αdone␈αor␈αa
␈↓ ↓X␈↓faster␈α∃word␈α∀transfer.␈α∃ The␈α∀PDP-10␈α∃implementation␈α∀at␈α∃Stanford␈α∀exploits␈α∃this;␈α∃an␈α∀IBM-style
␈↓ ↓X␈↓machine can derive similar bene≡t.
␈↓ ↓X␈↓␈↓ α(In␈α∞the␈α∂CLS,␈α∞NAK,␈α∞EOF,␈α∂and␈α∞INT␈α∞op-codes␈α∂the␈α∞data␈α∞byte␈α∂is␈α∞meaningless␈α∞and␈α∂should␈α∞be
␈↓ ↓X␈↓ignored,␈αhowever,␈αit␈αstill␈αmust␈αbe␈αpresent.␈α Additionally,␈αthis␈αbyte␈αshould␈αalways␈αbe␈αzero,␈α
to␈αallow
␈↓ ↓X␈↓these opcodes to have a meaningful data part in a future revision of the protocol.
␈↓ ↓X␈↓␈↓ α(There␈α
are␈α
no␈α
restrictions␈α
on␈αthe␈α
size␈α
or␈α
content␈α
of␈α
the␈αdata␈α
part␈α
of␈α
a␈α
NOP␈α
packet,␈αexcept
␈↓ ↓X␈↓the␈α∩packet␈α∪structure␈α∩restriction␈α∩that␈α∪1≤size≤256.␈α∩ Since,␈α∪however,␈α∩the␈α∩data␈α∪is␈α∩ignored␈α∪by␈α∩the
␈↓ ↓X␈↓receiver,␈αa␈αNOP␈αpacket␈αwould␈αgenerally␈αhave␈αa␈αone-byte␈αdata␈αpart,␈αalthough␈αsome␈αsystems␈αmight
␈↓ ↓X␈↓want␈αto␈αpad␈αto␈α4␈αdata␈αbytes␈α(note␈αthat␈αthis␈αmeans␈αthe␈αsize␈α≡eld␈αin␈αthe␈αpacket␈αheader␈αis␈α3!)␈αto␈αkeep
␈↓ ↓X␈↓things on word boundaries.
␈↓ ↓X␈↓␈↓ εP5␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬bPacket Format ␈↓ε
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_________________________________________
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 2 bytes SOP framing mark |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|======================================|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| Channel # | opcode |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| (4 bits) | (4 bits) |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|__________________|___________________|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 1 byte Packet number |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|______________________________________|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 1 byte Acknowledgement |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|______________________________________|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 1 byte Data size |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|======================================|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 1 byte Data word |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|______________________________________|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| (specified |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| by data Additional data bytes |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| size byte) |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|======================================|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 2 bytes Packet checksum |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|======================================|
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| 2 bytes EOP framing mark |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_| |
␈↓ ↓X␈↓ε␈↓ α(␈↓ ∧_|______________________________________|
␈↓ ↓X␈↓␈↓ εP6␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓ε␈↓ α(␈↓¬␈↓ ¬GHost-Host Opcodes␈↓
␈↓ ↓X␈↓␈↓ α(In␈α
the␈α∞descriptions␈α
below,␈α
certain␈α∞arguments␈α
are␈α
passed␈α∞along␈α
with␈α
the␈α∞commands.␈α
These
␈↓ ↓X␈↓arguments␈αare␈αlisted␈αin␈αthe␈αorder␈αin␈αwhich␈αthey␈αoccur,␈αalong␈αwith␈αtheir␈αbyte␈αsize.␈α They␈αall␈αoccur
␈↓ ↓X␈↓in the DATA ≡eld of the packet.
␈↓ ↓X␈↓␈↓ α(00 NOP (No-op)
␈↓ ↓X␈↓␈↓ α(This␈αopcode␈αis␈αa␈αno-operation␈αand␈αshould␈α
be␈αignored␈αby␈αthe␈αreceiver␈αexcept␈αthat␈αthe␈α
packet
␈↓ ↓X␈↓header␈α
still␈α
has␈α
signi≡cant␈α
information␈α
(ie,␈αthe␈α
acknowledgement␈α
byte).␈α
It␈α
is␈α
used␈α
to␈αacknowledge␈α
a
␈↓ ↓X␈↓packet without doing anything else.
␈↓ ↓X␈↓␈↓ α(01 RPC (Request Process Connection)
␈↓ ↓X␈↓␈↓ αx(optional) 8 bytes of process ID
␈↓ ↓X␈↓␈↓ αx(optional) 1 byte of initial window size
␈↓ ↓X␈↓␈↓ α(This␈αis␈αthe␈αestablish␈αconnection␈αopcode.␈α It␈αserves␈αa␈αdual␈αpurpose;␈αto␈αrequest␈αestablishing␈αa
␈↓ ↓X␈↓connection,␈α
and␈α
to␈α
con≡rm␈α
establishing␈α
a␈α
connection.␈α
In␈α
the␈α
≡rst␈α
case,␈α
the␈α
data␈α
area␈α
contains␈αan␈α
8.-
␈↓ ↓X␈↓byte␈α␈↓↓process␈α
ID␈↓,␈αwhich␈αis␈α
a␈αhandle␈αto␈α
the␈αremote␈αprocess␈α
the␈αsender␈αwishes␈α
to␈αconnect␈αto.␈α
In␈αthe
␈↓ ↓X␈↓latter␈αcase,␈αno␈α
process␈αID␈αis␈α
speci≡ed.␈α A␈αsingle␈α
byte␈αmay␈αfollow␈α
the␈αprocess␈αID␈α
to␈αspecify␈αan␈α
initial
␈↓ ↓X␈↓window size.
␈↓ ↓X␈↓␈↓ α(02 CLS (Close Connection)
␈↓ ↓X␈↓␈↓ α(This␈αis␈αthe␈αterminate␈αconnection␈αopcode.␈α It␈αmay␈αeither␈αterminate␈αan␈αexisting␈αconnection␈αor
␈↓ ↓X␈↓abort a request for one.
␈↓ ↓X␈↓␈↓ α(03 WIN (set WINdow size)
␈↓ ↓X␈↓␈↓ αx1 byte of window size
␈↓ ↓X␈↓␈↓ α(This␈αopcode␈αsets␈α
the␈αinput␈αwindow␈α
size;␈αie,␈αit␈α
suggests␈αto␈αthe␈α
receiver␈αhow␈αmany␈α
packets␈αit
␈↓ ↓X␈↓may␈αsend␈αbefore␈αwaiting␈αfor␈αan␈αacknowledgement.␈α The␈αminimum␈α(and␈αdefault)␈αwindow␈αsize␈αis␈α2
␈↓ ↓X␈↓packets.␈α⊃ The␈α⊃absolute␈α⊃maximum␈α⊃window␈α⊃is␈α∩127.;␈α⊃however,␈α⊃many␈α⊃systems␈α⊃may␈α⊃want␈α⊃to␈α∩set␈α⊃a
␈↓ ↓X␈↓smaller maximum window. At Stanford, the system maximum is 16. packets.
␈↓ ↓X␈↓␈↓ α(04 MSG (MeSsaGe)
␈↓ ↓X␈↓␈↓ αx1 to 256. bytes of data
␈↓ ↓X␈↓␈↓ α(This␈α⊂is␈α⊂the␈α⊂data␈α⊂transmission␈α⊂opcode.␈α⊂ The␈α∂contents␈α⊂of␈α⊂the␈α⊂data␈α⊂part␈α⊂are␈α⊂passed␈α⊂to␈α∂the
␈↓ ↓X␈↓tertiary process.
␈↓ ↓X␈↓␈↓ εP7␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(05 NAK (Negative AcKnowledgment)
␈↓ ↓X␈↓␈↓ α(This opcode requests that the receiver retransmit all unacknowledged packets that it sent.
␈↓ ↓X␈↓␈↓ α(06 EOF (End Of File)
␈↓ ↓X␈↓␈↓ α(This␈α
opcode␈α
is␈α
used␈α
to␈α
raise␈α
an␈α
"end␈α
of␈α
≡le"␈α
condition␈α
on␈α
a␈α
particular␈α
channel␈α
to␈αindicate
␈↓ ↓X␈↓the␈αend␈αof␈αa␈αdata␈αstream.␈α The␈αinterpretation␈αof␈α"end␈αof␈α≡le"␈αis␈αde≡ned␈αby␈αthe␈αhigh-level␈αprotocol
␈↓ ↓X␈↓using it.
␈↓ ↓X␈↓␈↓ α(07 INT (Interrupt)
␈↓ ↓X␈↓␈↓ α(This␈α∂opcode␈α∞is␈α∂used␈α∞to␈α∂raise␈α∞an␈α∂"interrupt"␈α∞condition␈α∂on␈α∞a␈α∂particular␈α∞channel.␈α∂ The␈α∞user
␈↓ ↓X␈↓process␈αshould␈αbe␈αtold␈α
of␈αthe␈αinterrupt␈αimmediately;␈α
if␈αa␈αdata␈αmark␈α
is␈αneeded␈αin␈αthe␈α
data␈αstream
␈↓ ↓X␈↓the␈αhigh-level␈αprotocol␈αshould␈αperform␈αthis␈αfunction.␈α The␈αinterpretation␈αof␈α"interrupt"␈αis␈αde≡ned
␈↓ ↓X␈↓by the high-level protocol using it.
␈↓ ↓X␈↓␈↓ α(10 ERR (Error)
␈↓ ↓X␈↓␈↓ αx1 to 256. bytes of ASCII error text
␈↓ ↓X␈↓␈↓ α(This␈αopcode␈αis␈αused␈α
to␈αsend␈αa␈αprotocol␈α
error␈αwarning.␈α It␈αis␈α
intended␈αthat␈αa␈αreceiver␈αof␈α
such
␈↓ ↓X␈↓a␈αwarning␈αoutput␈αthe␈αcontents␈αof␈αthe␈αdata␈αpart␈αof␈αthe␈αmessage␈α(which␈αshould␈αbe␈αan␈αASCII␈αstring)
␈↓ ↓X␈↓on␈αa␈α
logging␈αterminal␈α
so␈αthat␈αthe␈α
support␈αsta≥␈α
can␈αdetermine␈αthe␈α
cause␈αof␈α
the␈αproblem␈α
and␈αtake
␈↓ ↓X␈↓corrective␈αaction.␈α This␈αopcode␈αshould␈αbe␈αused␈αjudiciously,␈αsince␈αneedless␈αusage␈αwould␈αonly␈αdefeat
␈↓ ↓X␈↓its purpose.
␈↓ ↓X␈↓␈↓ εP8␈↓ X
␈↓ ↓X␈↓Host-Host Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ε↓Connections␈↓
␈↓ ↓X␈↓␈↓ α(In␈αthe␈αdiscussion␈αbelow,␈α
U␈αrefers␈αto␈αthe␈αprocess␈α
which␈αinitially␈αprovoked␈αthe␈α
connection␈αor
␈↓ ↓X␈↓␈↓↓user␈↓, S refers to the the process passively waiting for a connection or ␈↓↓server␈↓.
␈↓ ↓X␈↓␈↓ α(Channel 0 is to be used for ICP.
␈↓ ↓X␈↓␈↓ α(Following␈α∞the␈α∞establishment␈α∂of␈α∞a␈α∞dialup␈α∞connection,␈α∂U␈α∞should␈α∞send␈α∞a␈α∂few␈α∞NOP's␈α∞to␈α∂S␈α∞to
␈↓ ↓X␈↓avoid possible problems with dropped bytes while connecting.
␈↓ ↓X␈↓␈↓ α(U␈αmust␈α
know␈αthe␈α
process␈αID␈αof␈α
the␈αS␈α
it␈αwants␈α
to␈αconnect␈αto.␈α
As␈αfar␈α
as␈αDialnet␈αis␈α
concerned,
␈↓ ↓X␈↓process␈α∞ID's␈α
are␈α∞arbitrary␈α
ASCII␈α∞strings.␈α∞ However,␈α
conventions␈α∞have␈α
been␈α∞established␈α∞as␈α
noted
␈↓ ↓X␈↓elsewhere.
␈↓ ↓X␈↓␈↓ α(U␈αsends␈αan␈αRPC␈αwith␈αthe␈αprocess␈αID␈αat␈αS␈αit␈αwants␈αto␈αconnect␈αto.␈α S␈αmay␈αhave␈αbeen␈αwaiting
␈↓ ↓X␈↓for␈α
a␈αconnection,␈α
or␈αperhaps␈α
was␈αcreated␈α
by␈αS's␈α
host␈αas␈α
a␈αresult␈α
of␈αthe␈α
RPC.␈α If␈α
S␈αdoes␈α
not␈αexist␈α
or
␈↓ ↓X␈↓S's␈α
host␈α
is␈αunable␈α
or␈α
unwilling␈α
to␈αmake␈α
the␈α
connection␈αat␈α
the␈α
present␈α
time,␈αS's␈α
host␈α
should␈αreturn␈α
a
␈↓ ↓X␈↓CLS to refuse the connection.
␈↓ ↓X␈↓␈↓ α(Otherwise,␈αS␈αaccepts␈αthe␈αconnection␈αby␈αsending␈αan␈αRPC␈αback␈αto␈αU,␈αwith␈αa␈αnull␈αprocess␈αID.
␈↓ ↓X␈↓The␈αconnection␈αhas␈α
now␈αbeen␈αestablished,␈αand␈α
the␈αprocess␈αID␈αis␈α
no␈αlonger␈αused␈αby␈α
the␈αhost-host
␈↓ ↓X␈↓protocol.␈α⊂ The␈α⊂two␈α⊂processes␈α⊂may␈α⊂now␈α⊂pass␈α⊂data␈α⊂back␈α⊂and␈α⊂forth␈α⊂using␈α⊂the␈α⊂various␈α∂Host-Host
␈↓ ↓X␈↓opcodes.
␈↓ ↓X␈↓␈↓ α(When␈αa␈αhost␈αwishes␈αto␈αterminate␈αa␈αconnection,␈αit␈αsends␈αa␈αCLS.␈α Once␈αa␈αCLS␈αhas␈αbeen␈αsent,
␈↓ ↓X␈↓no␈αfurther␈αMSG's␈αmay␈αbe␈αsent␈αand␈αany␈αMSG␈αsent␈αshould␈αbe␈αreplied␈αto␈αwith␈αan␈αERR.␈α Of␈αcourse,
␈↓ ↓X␈↓a␈α∃new␈α∃connection␈α∃may␈α∃be␈α∃established␈α∃with␈α∃RPC.␈α∃ Breaking␈α∃the␈α∃phone␈α∃connection␈α∀implies
␈↓ ↓X␈↓terminating the connection.
␈↓ ↓X␈↓␈↓ α(When␈α
a␈αconnection␈α
is␈α
terminated,␈αthe␈α
recepient␈αof␈α
the␈α
CLS␈αshould␈α
send␈αa␈α
CLS␈α
to␈αcon≡rm
␈↓ ↓X␈↓terminating the process.
␈↓ ↓X␈↓␈↓ εP9␈↓ X
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ∧↑␈↓¬Introduction to Tertiary Protocols
␈↓ ↓X␈↓␈↓ α(All␈α
protocol␈αcommunication␈α
in␈α
the␈αhigher␈α
level␈α
Dialnet␈αprotocols␈α
(e.g.␈α
MAIL,␈αFile␈α
Transfer)
␈↓ ↓X␈↓uses a list format for messages. Each message therefore has the form
␈↓ ↓X␈↓␈↓ α((<identi≡er> <item> ... <item>)
␈↓ ↓X␈↓␈↓ α(where␈αthe␈αitems␈αthemselves␈αare␈αeither␈αidenti≡ers␈αor␈αhave␈αa␈αsimilar␈αstructure.␈α The␈αobject␈αof
␈↓ ↓X␈↓this scheme is to ensure ∨exibility.
␈↓ ↓X␈↓␈↓ α(Suppose,␈α
for␈αexample,␈α
that␈α
one␈αof␈α
the␈αitems␈α
in␈α
a␈αprotocol␈α
message␈αdesignates␈α
a␈α
user␈αname.
␈↓ ↓X␈↓Initial␈α
designs␈α∞of␈α
Dialnet␈α
may␈α∞allow␈α
only␈α
a␈α∞character␈α
string␈α
without␈α∞parentheses␈α
like␈α∞SMITH␈α
to
␈↓ ↓X␈↓designate␈α∩the␈α∪user.␈α∩ Later␈α∩this␈α∪might␈α∩be␈α∩elaborated␈α∪to␈α∩also␈α∩allow␈α∪a␈α∩complex␈α∪designator␈α∩like
␈↓ ↓X␈↓(SUCCESSOR␈α↔SMITH)␈α↔to␈α↔designate␈α↔the␈α↔person␈α↔who␈α↔has␈α↔replaced␈α↔SMITH␈α↔in␈α↔this␈α↔job
␈↓ ↓X␈↓assignment.
␈↓ ↓X␈↓␈↓ α(There␈αis␈αno␈αpresent␈αintention␈αthat␈αthe␈α
Dialnet␈αprotocols␈αwill␈αbe␈αsubject␈αto␈αrapid␈α
elaboration.
␈↓ ↓X␈↓The␈α∂present␈α∂object␈α∂is␈α∂merely␈α∂to␈α∂build␈α∂these␈α∞protocols␈α∂so␈α∂that␈α∂they␈α∂will␈α∂not␈α∂be␈α∂subject␈α∂to␈α∞blind
␈↓ ↓X␈↓alleys.␈α Therefore,␈αthere␈αare␈αno␈α≡xed␈αsize␈α≡elds,␈αand␈αitem␈αthat␈αis␈αinitially␈αrepresented␈αby␈αan␈αatomic
␈↓ ↓X␈↓name␈αmay␈αlater␈αbe␈αreplaced␈αby␈αsome␈αkind␈αof␈αexpression,␈αand␈αnew␈αterms␈αmay␈αbe␈αadjoined␈αto␈αlists.
␈↓ ↓X␈↓Thus␈αif␈αan␈αitem␈αis␈αpresently␈αdenoted␈αby␈αa␈αthree␈αterm␈αlist,␈αan␈αelaborated␈αprotocol␈αmay␈αlater␈αcall␈α
for
␈↓ ↓X␈↓a␈α
four␈α
item␈α
list,␈αbut␈α
if␈α
the␈α
same␈α
initial␈αidenti≡er␈α
is␈α
used,␈α
it␈α
should␈αstill␈α
be␈α
possible␈α
for␈α
a␈αrecipient␈α
to
␈↓ ↓X␈↓ignore the fourth item and still use the message.
␈↓ ↓X␈↓␈↓ α(We␈αbelieve␈αthat␈αthese␈αconventions,␈αat␈αslight␈αcost␈αin␈αinitial␈αimplementation,␈αwill␈αmake␈αfuture
␈↓ ↓X␈↓improvements easy should they be required.
␈↓ ↓X␈↓␈↓ εI10␈↓ X
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ¬/␈↓¬File Transfer Protocol
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬|Introduction␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∩␈↓↓File␈α⊃Transfer␈α∩Protocol␈↓␈α∩(FTP)␈α⊃provides␈α∩Dialnet␈α⊃hosts␈α∩with␈α∩a␈α⊃set␈α∩of␈α∩commands␈α⊃for
␈↓ ↓X␈↓transmission of ≡les among them.
␈↓ ↓X␈↓␈↓ α(Because␈α
we␈α
count␈αon␈α
quite␈α
di≥erent␈α
systems␈αusing␈α
Dialnet,␈α
it␈α
is␈αnecessary␈α
to␈α
establish␈αa␈α
small
␈↓ ↓X␈↓set␈α⊂of␈α⊂essential␈α⊂commands␈α⊂and␈α⊂replies␈α⊂that␈α⊂are␈α∂implemented␈α⊂by␈α⊂all␈α⊂of␈α⊂them␈α⊂in␈α⊂order␈α⊂to␈α∂make
␈↓ ↓X␈↓possible␈α⊂the␈α⊂communication␈α⊃between␈α⊂any␈α⊂two␈α⊃sites.␈α⊂ On␈α⊂top␈α⊃of␈α⊂this,␈α⊂additional␈α⊃commands␈α⊂are
␈↓ ↓X␈↓de≡ned that enchance data transfer between two similar hosts.
␈↓ ↓X␈↓␈↓ α(FTP␈α∩commands␈α⊃consist␈α∩of␈α⊃standard␈α∩8-bit␈α∩ASCII␈α⊃strings.␈α∩ Any␈α⊃number␈α∩appearing␈α∩in␈α⊃a
␈↓ ↓X␈↓command will always be decimal.
␈↓ ↓X␈↓␈↓ α(The␈αinteractions␈αbetween␈αthe␈α
various␈αparties␈αin␈αan␈α
FTP␈αtransaction␈αmay␈αbe␈α
best␈αdescribed
␈↓ ↓X␈↓by the following diagram: ␈↓ε
␈↓ ↓X␈↓ε␈↓ α( __________ __________
␈↓ ↓X␈↓ε␈↓ α( | | Data | |
␈↓ ↓X␈↓ε␈↓ α( ----->|(Output)|>---------->|(Input) |>--
␈↓ ↓X␈↓ε␈↓ α( ! | | Channel(1) | | !
␈↓ ↓X␈↓ε␈↓ α( ! | | | | !
␈↓ ↓X␈↓ε␈↓ α( ! | | | | !
␈↓ ↓X␈↓ε␈↓ α( ! | | Command | | ! _______
␈↓ ↓X␈↓ε␈↓ α( ! | Server |<==========>| User |<======>| User|
␈↓ ↓X␈↓ε␈↓ α( ! | Process| Channel(0) | Process| ! |_____|
␈↓ ↓X␈↓ε␈↓ α( ∧ | | | | !
␈↓ ↓X␈↓ε␈↓ α(________ | | | | ! __________
␈↓ ↓X␈↓ε␈↓ α(| File | | | Data | | --->| File |
␈↓ ↓X␈↓ε␈↓ α(|System|<-<|(Input) |<----------<|(Output)|<----<| System |
␈↓ ↓X␈↓ε␈↓ α(|______| |________| Channel(2) |________| |________|
␈↓ ↓X␈↓␈↓ α(Under␈α∞request␈α∂from␈α∞the␈α∞user␈α∂process,␈α∞the␈α∂user␈α∞program␈α∞establishes␈α∂a␈α∞connection␈α∂with␈α∞the
␈↓ ↓X␈↓desired␈α
server.␈α
Channel␈α
0␈α
is␈α
employed␈α
for␈α
exchange␈α
of␈α
commands␈α
and␈α
replies␈α
between␈α
the␈αuser
␈↓ ↓X␈↓and␈αserver␈αprograms.␈α When␈αa␈αconnection␈αis␈αestablished,␈αthe␈αserver␈αsends␈αa␈α"reply"␈αconsisting␈αof␈αa
␈↓ ↓X␈↓greeting message (which can contain anything, such as system name, etc.).
␈↓ ↓X␈↓␈↓ α(At␈αthis␈αpoint␈αboth␈αsites␈αmust␈αreach␈αsome␈αagreement␈αabout␈αthe␈αcharacteristics␈αof␈αthe␈α
∨ow␈αof
␈↓ ↓X␈↓data␈αbetween␈αthem␈αso␈αthat␈αthe␈α
transferred␈αdata␈αis␈αinterpreted␈αin␈αthe␈α
same␈αway␈αat␈αboth␈αends␈αof␈α
the
␈↓ ↓X␈↓connection.␈α This␈αis␈αthe␈αpurpose␈αof␈αthe␈αDATA␈αcommand.␈α The␈αagreement␈αmay␈αbe␈αrenegotiated␈αat
␈↓ ↓X␈↓any␈αtime␈αin␈αwhich␈αno␈αdata␈αtransmission␈αis␈αin␈αprogress.␈α The␈αuser␈αmay␈αthen␈αissue␈αservice␈αrequests
␈↓ ↓X␈↓thru the command channel.
␈↓ ↓X␈↓␈↓ α(Data␈αis␈αtransferred␈αon␈αthe␈αdata␈αchannels.␈α When␈αthe␈αserver␈αreceives␈αa␈αrequest␈αto␈αretrieve␈αa
␈↓ ↓X␈↓≡le,␈αit␈α
tries␈αto␈α
obtain␈αthe␈α≡le␈α
and,␈αif␈α
everything␈αgoes␈α
right,␈αit␈αsends␈α
a␈αpositive␈α
reply␈αon␈α
channel␈α0
␈↓ ↓X␈↓and␈α∞starts␈α∞sending␈α∞the␈α∞data␈α∞on␈α∞channel␈α∞1.␈α
Upon␈α∞receipt␈α∞of␈α∞the␈α∞reply,␈α∞the␈α∞user␈α∞will␈α∞start␈α
taking
␈↓ ↓X␈↓packets␈α∂from␈α∂channel␈α∂1␈α∂and␈α⊂will␈α∂eventually␈α∂store␈α∂the␈α∂data␈α∂in␈α⊂its␈α∂≡le␈α∂system.␈α∂ When␈α∂a␈α⊂store␈α∂or
␈↓ ↓X␈↓append␈α∞operations␈α∂are␈α∞requested␈α∂it␈α∞is␈α∂the␈α∞user␈α∂program␈α∞which␈α∂gets␈α∞the␈α∂≡le␈α∞and␈α∂sends␈α∞it␈α∂to␈α∞the
␈↓ ↓X␈↓␈↓ εI11␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓server␈α∂thru␈α∞channel␈α∂2.␈α∞ After␈α∂the␈α∞request,␈α∂the␈α∂server␈α∞is␈α∂listening␈α∞to␈α∂this␈α∞channel␈α∂and␈α∂when␈α∞the
␈↓ ↓X␈↓packets arrive, it will store the data in its ≡le system.
␈↓ ↓X␈↓␈↓ α(Data transmission is terminated by any of the following reasons:
␈↓ ↓X␈↓␈↓ αx-␈α∞The␈α∞receiver␈α∞gets␈α∞an␈α∞end␈α∞of␈α∞≡le␈α∞on␈α∞that␈α∞channel.␈α∞ This␈α∞is␈α∞the␈α∞normal
␈↓ ↓X␈↓␈↓ αxtermination for a successful data transfer.
␈↓ ↓X␈↓␈↓ αx-␈α
An␈αinterrupt␈α
has␈αbeen␈α
issued␈α
on␈αthe␈α
data␈αchannel.␈α
Any␈αdata␈α
previously
␈↓ ↓X␈↓␈↓ αxreceived in that transmission is discarded.
␈↓ ↓X␈↓␈↓ αx-␈αThe␈αcommand␈αchannel␈αis␈αclosed.␈α The␈αcommand␈αchannel␈αmay␈αbe␈αclosed
␈↓ ↓X␈↓␈↓ αxby␈α
the␈αserver␈α
at␈αany␈α
time,␈αbut␈α
it␈αwill␈α
typically␈αdo␈α
so␈αonly␈α
after␈α
a␈αrequest
␈↓ ↓X␈↓␈↓ αxfrom the user who will send it when ≡nished using the FTP service.
␈↓ ↓X␈↓␈↓ εI12␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬sFTP Replies␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∞following␈α∞pages␈α∞contain␈α∞a␈α∞description␈α
of␈α∞the␈α∞commands␈α∞available␈α∞in␈α∞the␈α∞Dialnet␈α
File
␈↓ ↓X␈↓Transfer Protocol and the corresponding set of replies.
␈↓ ↓X␈↓␈↓ α(It␈αis␈αstrongly␈αrecommended␈αthat␈α␈↓↓all␈↓␈αthe␈αcommands␈αbe␈αimplemented,␈αalthough␈αclearly␈αnot␈αall
␈↓ ↓X␈↓have the same importance.
␈↓ ↓X␈↓␈↓ α(There␈α
are␈αonly␈α
four␈αpossible␈α
replies.␈α In␈α
each␈α
of␈αthem␈α
the␈α≡rst␈α
item␈αidenti≡es␈α
the␈αreply.␈α
The
␈↓ ↓X␈↓second␈α∞item␈α∞is␈α∞a␈α∞list␈α∞which␈α∞contains␈α∞a␈α∞string␈α∞which␈α∞in␈α∞most␈α∞cases␈α∞is␈α∞passed␈α∞to␈α∞the␈α∂user␈α∞without
␈↓ ↓X␈↓further processing. Hence, there is a choice as to the amount of information to return in a reply.
␈↓ ↓X␈↓␈↓ α(The replies are:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (<optional-text>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈αcommand␈αhas␈αbeen␈αaccepted␈αas␈αissued␈αand␈αwill␈αcause␈αthe␈αdesired␈αe≥ect.␈α If
␈↓ ↓X␈↓␈↓ αxthe command requires two replies, this is the primary positive reply.
␈↓ ↓X␈↓␈↓ α(␈↓↓(DONE (<optional-text>))␈↓
␈↓ ↓X␈↓␈↓ α(This␈α
is␈αthe␈α
secondary␈αreply␈α
for␈α
a␈αdata␈α
transfer␈αcommand␈α
whose␈α
primary␈αreply
␈↓ ↓X␈↓␈↓ αxwas positive. It indicates that the data transfer is ≡nished.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<optional-text>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α
server␈α
cannot␈αattend␈α
the␈α
request␈αbut␈α
if␈α
you␈αkeep␈α
trying␈α
it␈α
may␈αeventually
␈↓ ↓X␈↓␈↓ αxgive you the service.
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<optional-text>))␈↓
␈↓ ↓X␈↓␈↓ α(You are losing with this command. The argument will tell the reason.
␈↓ ↓X␈↓␈↓ εI13␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬→Access Control Commands␈↓
␈↓ ↓X␈↓␈↓ α(The␈α
following␈α
commands␈αspecify␈α
access␈α
control␈α
identi≡ers.␈α Some␈α
sites␈α
may␈α
not␈αrequire␈α
them,
␈↓ ↓X␈↓but␈αif␈αissued␈αthey␈αshould␈αbe␈αcorrect.␈α When␈αneeded␈αit␈αis␈αthe␈αresponsibility␈αof␈αthe␈αuser␈αprogram␈αto
␈↓ ↓X␈↓make␈α
sure␈α
that␈α∞they␈α
arrive␈α
in␈α∞the␈α
correct␈α
order.␈α
Because␈α∞the␈α
server␈α
has␈α∞the␈α
faculty␈α
to␈α∞close␈α
the
␈↓ ↓X␈↓connection at any time, it may very well do so after several unsuccessful log-in trials.
␈↓ ↓X␈↓␈↓ α(I. (USER <user-id>)
␈↓ ↓X␈↓␈↓ α(With␈αthis␈α
command␈αthe␈α
user␈αidenti≡es␈αhimself␈α
to␈αthe␈α
server␈αso␈αthat␈α
it␈αis␈α
granted␈αaccess␈αto␈α
its
␈↓ ↓X␈↓≡le␈α
system.␈α Some␈α
sites␈αmight␈α
require␈αthis␈α
command␈αto␈α
be␈αthe␈α
≡rst␈αcommand␈α
thru␈α
the␈αconnection
␈↓ ↓X␈↓and␈αmay␈αeven␈αrequire␈αa␈αcomplete␈αlog-in␈αsequence␈αwith␈αa␈αpassword␈αand/or␈αan␈αaccount␈αnumber.␈α A
␈↓ ↓X␈↓new␈αUSER␈αcommand␈αmay␈αbe␈αsent␈αat␈αany␈αtime,␈αin␈αwhich␈αthere␈αis␈αno␈αdata␈αtransmission,␈αto␈αchange
␈↓ ↓X␈↓the␈α⊂access␈α∂control␈α⊂and/or␈α∂accounting␈α⊂information.␈α∂ Transfer␈α⊂parameters␈α∂are␈α⊂unchanged␈α⊂by␈α∂this
␈↓ ↓X␈↓command.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∃user␈α∃has␈α∃successfully␈α∃logged␈α∃into␈α∃the␈α∃foreign␈α∃host.␈α∃ No␈α⊗password␈α∃is
␈↓ ↓X␈↓␈↓ αxrequired.
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (PASSWORD?))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α<user-id>␈αwas␈αaccepted␈αbut␈α
a␈αcorrect␈αpassword␈αis␈αrequired␈αto␈α
continue␈αthe
␈↓ ↓X␈↓␈↓ αxlog-in process.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(II. (PASSWORD <password>)
␈↓ ↓X␈↓␈↓ α(The argument is a character string specifying the user's password.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ α(User log-in completed.
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (ACCOUNT?))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∀<password>␈α∀was␈α∀accepted␈α∀but␈α∀an␈α∀account␈α∀speci≡cation␈α∀is␈α∀required␈α∀to
␈↓ ↓X␈↓␈↓ αxcontinue the log-in process.
␈↓ ↓X␈↓␈↓ εI14␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(III. (ACCOUNT <account>)
␈↓ ↓X␈↓␈↓ α(The argument is a string identifying the user's account.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ α(Even␈αif␈αthe␈αserver␈αhas␈αno␈αaccounting␈αservice␈αthis␈αreply␈αshould␈αbe␈αsent␈αin␈αcase␈αa
␈↓ ↓X␈↓␈↓ αx≡xed sequence has been issued by the user.
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(IV. (BYE)
␈↓ ↓X␈↓␈↓ α(The user sends this message before closing the connection, to say it is going away.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ εI15␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬5The DATA Command␈↓
␈↓ ↓X␈↓␈↓ α(V. (DATA <byte-size> <type> <structure>)
␈↓ ↓X␈↓␈↓ α(The␈αsystems␈αthat␈αcommunicate␈αby␈αmeans␈αof␈αDialnet␈αmay␈αhave␈αdi≥erent␈αword␈α(byte)␈αlengths,
␈↓ ↓X␈↓employ␈α∞di≥erent␈α
data␈α∞representations␈α
and␈α∞structure␈α
their␈α∞stored␈α
data␈α∞in␈α
various␈α∞ways.␈α∞ To␈α
solve
␈↓ ↓X␈↓this␈αproblem␈αwe␈αde≡ne␈αsome␈αstandard␈αdefault␈αvalues␈αof␈αthese␈αparameters␈αand␈αemploy␈αthe␈αDATA
␈↓ ↓X␈↓command␈αto␈αchange␈αthem␈αin␈αcases␈αin␈αwhich␈αthe␈αstandards␈αare␈αnot␈αadequate.␈α All␈αusers␈αof␈αDialnet
␈↓ ↓X␈↓must␈α
implement␈α∞the␈α
defaults,␈α∞that␈α
is,␈α∞they␈α
must␈α
be␈α∞able␈α
to␈α∞send␈α
and␈α∞receive␈α
meaningful␈α∞data␈α
in
␈↓ ↓X␈↓contiguous␈αlogical␈αunits␈αof␈α8␈αbits,␈αwhich␈αcan␈αbe␈αinterpreted␈αas␈αstandard␈αASCII␈αcharacters␈αand␈αare
␈↓ ↓X␈↓always transferred in groups delimited by end-of-≡le characters.
␈↓ ↓X␈↓␈↓ α(When␈αa␈αconnection␈αis␈α≡rst␈αestablished,␈αthe␈α
server␈αwill␈αassume␈αthat␈αthe␈αdefault␈αvalues␈αwill␈α
be
␈↓ ↓X␈↓used␈α∞and␈α∞will␈α
be␈α∞prepared␈α∞to␈α
make␈α∞the␈α∞necessary␈α
data␈α∞conversions␈α∞from␈α
his␈α∞own␈α∞to␈α∞the␈α
default
␈↓ ↓X␈↓form when sending, and from the default to its own when receiving.
␈↓ ↓X␈↓␈↓ α(Often␈α∂user␈α∞and␈α∂server␈α∞will␈α∂be␈α∞similar␈α∂machines␈α∞and␈α∂converting␈α∞the␈α∂data␈α∞to␈α∂the␈α∞standard
␈↓ ↓X␈↓default␈α⊂form␈α⊃will␈α⊂be␈α⊃unnecessary.␈α⊂ The␈α⊂DATA␈α⊃command␈α⊂allows␈α⊃a␈α⊂user␈α⊂to␈α⊃tell␈α⊂which␈α⊃are␈α⊂the
␈↓ ↓X␈↓parameters␈α
that␈α
he␈α
wants␈α
the␈α
server␈α
to␈α
employ␈α
on␈α
the␈α
data␈α
in␈α
order␈α
to␈α
minimize␈α
the␈α
user's␈αdata
␈↓ ↓X␈↓conversion␈αe≥ort.␈α
It␈αcan␈α
be␈αissued␈α
as␈αmany␈αtimes␈α
as␈αdesired␈α
but␈αnot␈α
during␈αa␈α
data␈αtransmission.
␈↓ ↓X␈↓Of course, it can also be used to return to the standard default form.
␈↓ ↓X␈↓␈↓ α(All the arguments should be given, and precisely in the speci≡ed order. They stand for:
␈↓ ↓X␈↓␈↓ α(<byte-size>␈α⊂is␈α⊃a␈α⊂decimal␈α⊂number␈α⊃specifying␈α⊂the␈α⊂desired␈α⊃logical␈α⊂byte␈α⊃size,␈α⊂i.e.,
␈↓ ↓X␈↓␈↓ αxstarting␈α∞with␈α∂the␈α∞≡rst␈α∞bit␈α∂transmitted␈α∞on␈α∞the␈α∂data␈α∞channel,␈α∂every␈α∞<byte-
␈↓ ↓X␈↓␈↓ αxsize> bits are a complete entity. The default byte size is 8.
␈↓ ↓X␈↓␈↓ α(<type> may be:
␈↓ ↓X␈↓␈↓ αxASCII␈α⊂Data␈α⊂consist␈α⊂of␈α⊂a␈α⊂sequence␈α⊂of␈α⊂contiguous␈α⊂standard␈α⊂8-bit
␈↓ ↓X␈↓␈↓ βHASCII␈αcharacter.␈αThe␈αend␈αof␈αa␈αline␈αof␈αtext␈αis␈αdenoted␈α
by␈αa
␈↓ ↓X␈↓␈↓ βHsequence <CRLF>. This is the default type.
␈↓ ↓X␈↓␈↓ αxEBCDIC␈αData␈αconsist␈αof␈α8-bit␈αEBCDIC␈αcharacters.␈αThe␈αend␈αof␈αa
␈↓ ↓X␈↓␈↓ βHline of text is denoted by a <NL> character.
␈↓ ↓X␈↓␈↓ αxIMAGE␈α∞Data␈α∞consist␈α∞of␈α∞a␈α∞stream␈α∞of␈α∞contiguous␈α∞bits␈α∞that␈α
should
␈↓ ↓X␈↓␈↓ βHbe␈αtaken␈αin␈αcontiguous␈αgroups␈αof␈αsize␈αgiven␈αby␈αthe␈αvalue␈αof
␈↓ ↓X␈↓␈↓ βH<byte-size>.␈α∞This␈α∞type␈α
is␈α∞intended␈α∞for␈α∞e≠cient␈α
transmission
␈↓ ↓X␈↓␈↓ βHbetween similar machines.
␈↓ ↓X␈↓␈↓ α(<structure> may be:
␈↓ ↓X␈↓␈↓ αxFILE␈α
File␈α
(no␈α
internal␈αstructure).␈α
The␈α
end␈α
of␈αa␈α
≡le␈α
is␈α
marked␈αby
␈↓ ↓X␈↓␈↓ βHan end-of-≡le packet.
␈↓ ↓X␈↓␈↓ εI16␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ αxRECORD␈α
The␈αdata␈α
is␈αgrouped␈α
in␈αrecords␈α
delimited␈αby␈α
an␈αEOR
␈↓ ↓X␈↓␈↓ βH(end␈α∂of␈α∞record)␈α∂marker.␈α∞At␈α∂the␈α∂end␈α∞of␈α∂the␈α∞≡le␈α∂there␈α∂is␈α∞an
␈↓ ↓X␈↓␈↓ βHend-of-≡le packet after the last EOR.
␈↓ ↓X␈↓␈↓ α(If␈α∂a␈α∂site␈α∂receives␈α∂and␈α∂stores␈α∂a␈α⊂≡le␈α∂while␈α∂certain␈α∂parameter␈α∂values␈α∂are␈α∂active␈α∂and␈α⊂is␈α∂later
␈↓ ↓X␈↓requested␈α∩to␈α∩return␈α∩that␈α∪≡le␈α∩using␈α∩the␈α∩same␈α∩values,␈α∪the␈α∩input␈α∩and␈α∩output␈α∩copies␈α∪should␈α∩be
␈↓ ↓X␈↓identical.␈α∞Also␈α
we␈α∞must␈α∞require␈α
that␈α∞any␈α
transformation␈α∞su≥ered␈α∞by␈α
a␈α∞≡le␈α
during␈α∞the␈α∞process␈α
of
␈↓ ↓X␈↓storing it do not a≥ect the contents of that ≡le if output in another form.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ α(Good, the server agrees.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(You are not allowed to change the transfer parameters now.
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈αserver␈α
may␈αnot␈α
have␈αimplemented␈αone␈α
or␈αseveral␈α
of␈αthe␈α
parameter␈αvalues
␈↓ ↓X␈↓␈↓ αxspeci≡ed␈α∀by␈α∀the␈α∀arguments,␈α∀or␈α∀it␈α∀can␈α∀accept␈α∀each␈α∀of␈α∀them␈α∀in␈α∪some
␈↓ ↓X␈↓␈↓ αxcombination␈α∞but␈α∞not␈α∞the␈α∞three␈α∞together␈α∞as␈α∞required␈α∞in␈α∞the␈α∂command␈α∞or
␈↓ ↓X␈↓␈↓ αxthe arguments are not in the correct order, etc.
␈↓ ↓X␈↓␈↓ εI17␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(␈↓¬␈↓ ¬"FTP Service Commands␈↓
␈↓ ↓X␈↓␈↓ α(VI. (RETRIEVE <for-path-name>)
␈↓ ↓X␈↓␈↓ α(This␈α∂command␈α∂tells␈α∂the␈α⊂server␈α∂to␈α∂send␈α∂the␈α∂≡le␈α⊂speci≡ed␈α∂by␈α∂<for-path-name>␈α∂to␈α⊂the␈α∂user.
␈↓ ↓X␈↓Upon␈αreceiving␈αit,␈αthe␈αoutput␈αside␈αof␈αthe␈αserver's␈αprogram␈αshould␈αlook␈αfor␈αthis␈α≡le␈αin␈αthe␈αserver's
␈↓ ↓X␈↓≡le␈αsystem.␈α Then␈αit␈αwill␈αreport␈αthe␈αresult␈αof␈αthe␈αlookup␈αoperation␈α(so␈αthat␈αthe␈αuser's␈αprogram␈αcan
␈↓ ↓X␈↓be␈α
informed)␈αand,␈α
if␈αsuccessful,␈α
will␈α
start␈αtransmitting.␈α
At␈αthe␈α
end,␈α
a␈αreport␈α
about␈αthe␈α
result␈αof␈α
the
␈↓ ↓X␈↓transfer operation will also be emitted.
␈↓ ↓X␈↓␈↓ α(Primary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The lookup succeeded and the server has started sending the ≡le.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α( Secondary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(DONE (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The transfer is ≡nished and the data channel closed.
␈↓ ↓X␈↓␈↓ α(␈↓↓(STOPPED (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(Channel␈α∞1␈α∞was␈α∞closed␈α∞before␈α∞an␈α∞end-of-≡le␈α∞had␈α∞arrived.␈α∞ The␈α∞part␈α∞of␈α∞the␈α∞≡le
␈↓ ↓X␈↓␈↓ αxthat␈α⊃had␈α⊃already␈α⊃been␈α⊃transmitted␈α∩(if␈α⊃any)␈α⊃will␈α⊃not␈α⊃be␈α⊃saved,␈α∩i.e.␈α⊃the
␈↓ ↓X␈↓␈↓ αxRETRIEVE command will not have any e≥ect.
␈↓ ↓X␈↓␈↓ α(VII. (STORE <for-path-name>)
␈↓ ↓X␈↓␈↓ α(The␈αserver␈αshould␈αopen␈αa␈α≡le␈αnamed␈α<for-path-name>␈α
and␈αstore␈αin␈αit␈αthe␈αdata␈αthat␈αthe␈α
user
␈↓ ↓X␈↓will␈αsend.␈αIf␈αa␈α≡le␈αwith␈αthat␈αname␈αalready␈αexists␈αat␈αthe␈αserver␈αsite␈αit␈αwill␈αbe␈αoverwritten,␈αotherwise
␈↓ ↓X␈↓the server should create it.
␈↓ ↓X␈↓␈↓ α(Primary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∂≡le␈α∞has␈α∂been␈α∞found␈α∂or␈α∞created.␈α∂ The␈α∞server␈α∂is␈α∞ready␈α∂to␈α∞receive␈α∂the␈α∞data
␈↓ ↓X␈↓␈↓ αxthru channel 2.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))
␈↓ ↓X␈↓␈↓ εI18␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(Secondary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(DONE (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∂transfer␈α∂is␈α∂≡nished␈α∞(an␈α∂end-of-≡le␈α∂has␈α∂been␈α∞received).␈α∂ The␈α∂≡le␈α∂is␈α∞closed
␈↓ ↓X␈↓␈↓ αxand so is data channel 2.
␈↓ ↓X␈↓␈↓ α(␈↓↓(STOPPED (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(Channel␈α∞2␈α∂closed␈α∞before␈α∂an␈α∞end-of-≡le␈α∂arrived.␈α∞The␈α∂part␈α∞of␈α∂the␈α∞≡le␈α∂that␈α∞had
␈↓ ↓X␈↓␈↓ αxalready␈αbeen␈αreceived␈α(if␈αany)␈αwill␈αnot␈αbe␈αsaved.␈α The␈αSTORE␈αcommand
␈↓ ↓X␈↓␈↓ αxwill not have any e≥ect.
␈↓ ↓X␈↓␈↓ α(VIII. (APPEND <for-path-name>)
␈↓ ↓X␈↓␈↓ α(This␈α
command␈αtells␈α
the␈αserver␈α
to␈α
open␈αthe␈α
≡le␈αspeci≡ed␈α
by␈α<for-path-name>␈α
for␈α
input␈αand
␈↓ ↓X␈↓append␈αto␈αit␈αthe␈αdata␈αthat␈αthe␈αuser␈αwill␈αsend␈αthru␈αchannel␈α2.␈α If␈αno␈α≡le␈αexists␈αwith␈αthat␈αname␈αthis
␈↓ ↓X␈↓command will have the e≥ect of a STORE command.
␈↓ ↓X␈↓␈↓ α(Primary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The ≡le has been found or created.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(Secondary replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(DONE (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α∂transfer␈α∂is␈α∂≡nished␈α∞(an␈α∂end-of-≡le␈α∂has␈α∂been␈α∞received).␈α∂ The␈α∂≡le␈α∂is␈α∞closed
␈↓ ↓X␈↓␈↓ αxand so is data channel 2.
␈↓ ↓X␈↓␈↓ α(␈↓↓(STOPPED (<text>))␈↓
␈↓ ↓X␈↓␈↓ α(Channel␈α
2␈α
has␈α
been␈α
closed␈α
before␈α
an␈α
end-of-≡le␈α
has␈α
arrived.␈α
The␈α
part␈α
of␈αthe␈α
≡le
␈↓ ↓X␈↓␈↓ αxthat␈α
had␈αalready␈α
been␈α
received␈α(if␈α
any)␈α
will␈αnot␈α
be␈α
saved.␈α The␈α
APPEND
␈↓ ↓X␈↓␈↓ αxcommand will not have any e≥ect.
␈↓ ↓X␈↓␈↓ εI19␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(IX. (ABORT)
␈↓ ↓X␈↓␈↓ α(This␈αcommand␈α
tells␈αthe␈αserver␈α
that␈αthe␈α≡le␈α
transfer␈αrequested␈αby␈α
the␈αprevious␈αcommand␈α
has
␈↓ ↓X␈↓been␈α∞cancelled.␈α∞For␈α∞that␈α∞purpose␈α∞an␈α∞interrupt␈α∂packet␈α∞is␈α∞sent␈α∞to␈α∞the␈α∞server␈α∞on␈α∞the␈α∂data␈α∞channel.
␈↓ ↓X␈↓Because␈α∞the␈α∞server␈α∂was␈α∞attending␈α∞that␈α∂channel,␈α∞it␈α∞will␈α∞recognize␈α∂the␈α∞packet,␈α∞terminate␈α∂any␈α∞data
␈↓ ↓X␈↓transmission␈α
or␈α
reception␈α
and␈α
turn␈α
its␈α
attention␈α
to␈α
the␈α
command␈α
channel.␈α
Any␈α
data␈α∞received␈α
so
␈↓ ↓X␈↓far␈αwill␈αbe␈αdiscarded.␈αThe␈αprevious␈αcommand␈αwill␈αhave␈αno␈αe≥ect␈αon␈αthe␈α≡les␈αof␈αeither␈αthe␈αuser␈αor
␈↓ ↓X␈↓the␈α∞server.␈α∞ Had␈α∞the␈α∂transfer␈α∞already␈α∞been␈α∞completed␈α∞and␈α∂the␈α∞data␈α∞channel␈α∞closed,␈α∂the␈α∞receiver
␈↓ ↓X␈↓would have already closed the ≡le in its ≡le system and no abortion would be possible.
␈↓ ↓X␈↓␈↓ α(Only␈α≡le␈αtransfers␈αcan␈αbe␈αaborted␈αbecause␈αthere␈α
is␈αno␈αcontrol␈αon␈αthe␈αother␈αservices␈αfrom␈α
the
␈↓ ↓X␈↓very ≡rst moment in which the corresponding command is issued.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(X. (RENAME <for-path-name1> TO <for-path-name2>)
␈↓ ↓X␈↓␈↓ α(The server is instructed to change the name of <for-path-name1> to <for-path-name2>.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)
␈↓ ↓X␈↓↓␈↓ α((BUSY (<reason>))
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(XI. (DELETE <for-path-name>)
␈↓ ↓X␈↓␈↓ α(The server is instructed to delete the ≡le speci≡ed by <for-path-name>.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK)␈↓
␈↓ ↓X␈↓␈↓ α(The ≡le has been deleted.
␈↓ ↓X␈↓␈↓ α(␈↓↓(BUSY (<reason>))
␈↓ ↓X␈↓↓␈↓ α((FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ εI20␈↓ X
␈↓ ↓X␈↓File Transfer Protocol␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(XI. (DIRECTORY <for-dir-name>)
␈↓ ↓X␈↓␈↓ α(This␈α
command␈α∞asks␈α
the␈α
server␈α∞for␈α
a␈α∞list␈α
of␈α
the␈α∞≡les␈α
in␈α
the␈α∞directory␈α
speci≡ed␈α∞by␈α
<for-dir-
␈↓ ↓X␈↓name>.␈α⊂If␈α∂no␈α⊂argument␈α∂is␈α⊂given␈α∂a␈α⊂list␈α∂of␈α⊂the␈α∂≡les␈α⊂in␈α∂the␈α⊂log-in␈α∂directory␈α⊂should␈α∂be␈α⊂sent.␈α∂The
␈↓ ↓X␈↓information will be contained in the reply (sent thru the command channel).
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK <≡le-list>)␈↓
␈↓ ↓X␈↓␈↓ α(<≡le-list>␈αis␈α
the␈αrequested␈αlist␈α
of␈α≡les.␈α It␈α
should␈αbe␈αpassed␈α
directly␈αto␈αthe␈α
human
␈↓ ↓X␈↓␈↓ αxuser.
␈↓ ↓X␈↓␈↓ α(␈↓↓(FAILED (<reason>))␈↓
␈↓ ↓X␈↓␈↓ α(XII. (STATUS)
␈↓ ↓X␈↓␈↓ α(With␈α∞this␈α∞command␈α
the␈α∞user␈α∞asks␈α∞for␈α
whatever␈α∞information␈α∞the␈α
server␈α∞may␈α∞want␈α∞to␈α
send
␈↓ ↓X␈↓him.␈α∞ It␈α
may␈α∞be␈α
issued␈α∞at␈α
any␈α∞time.␈α
The␈α∞information␈α
will␈α∞be␈α
sent␈α∞as␈α
a␈α∞reply␈α
on␈α∞channel␈α∞0␈α
(the
␈↓ ↓X␈↓command channel!) and is intended exclusively for human users.
␈↓ ↓X␈↓␈↓ α(Replies:
␈↓ ↓X␈↓␈↓ α(␈↓↓(OK <information-list>))␈↓
␈↓ ↓X␈↓␈↓ α(The␈α⊂contents␈α∂of␈α⊂the␈α∂<information-list>␈α⊂should␈α∂be␈α⊂directly␈α∂sent␈α⊂to␈α⊂the␈α∂human
␈↓ ↓X␈↓␈↓ αxuser for its interpretation. This is the only legal reply.
␈↓ ↓X␈↓␈↓ εI21␈↓ X
␈↓ ↓X␈↓␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ ε→␈↓¬Glossary
␈↓ ↓X␈↓␈↓ α(ACKNOWLEDGEMENT␈α∀--␈α∀an␈α∃8.-bit␈α∀quantity␈α∀which␈α∀speci≡es␈α∃the␈α∀packet
␈↓ ↓X␈↓␈↓ αxsequence␈α∀number␈α∀of␈α∀the␈α∀highest␈α∀consecutive␈α∀packet␈α∀which␈α∀has␈α∪been
␈↓ ↓X␈↓␈↓ αxsuccessfully␈α
received.␈α
An␈α
acknowledgement␈α
implies␈α
that␈α
all␈α
packets␈α
with
␈↓ ↓X␈↓␈↓ αxlower sequence numbers have been received as well.
␈↓ ↓X␈↓␈↓ α(BYTE␈α
--␈α
an␈α8.-bit␈α
quantity.␈α
While␈α
␈↓↓Dialnet␈↓␈αtransmissions␈α
are␈α
to␈α
be␈αconsidered
␈↓ ↓X␈↓␈↓ αxas a bit stream, this concept is convenient to use for many reasons.
␈↓ ↓X␈↓␈↓ α(BYTE␈αSIZE␈α--␈αthis␈αrefers␈αto␈αthe␈αbyte␈αsize␈αof␈αdata␈αas␈αseen␈αby␈αthe␈αhost␈αcomputer.
␈↓ ↓X␈↓␈↓ αxAll␈α∞␈↓↓Dialnet␈↓␈α∞transmissions␈α∞should␈α∞be␈α∞considered␈α∞bit␈α∞stream␈α∞transmissions
␈↓ ↓X␈↓␈↓ αxsent in units of 8.-bit bytes.
␈↓ ↓X␈↓␈↓ α(CHANNEL␈α⊃--␈α⊃an␈α⊃8.-bit␈α∩quantity␈α⊃identifying␈α⊃which␈α⊃data␈α⊃stream␈α∩this␈α⊃packet
␈↓ ↓X␈↓␈↓ αxbelongs␈αto.␈α Channels␈αhave␈αno␈αmeaning␈αto␈αthe␈αhost-host␈αprotocol,␈αonly␈αto
␈↓ ↓X␈↓␈↓ αxhigher level protocols. Channel 0 is the channel normally used.
␈↓ ↓X␈↓␈↓ α(CHECKSUM␈α--␈αa␈α16.-bit␈αquantity␈αcontaining␈αa␈αpacket␈αchecksum,␈αused␈αin␈αerror
␈↓ ↓X␈↓␈↓ αxdetection.
␈↓ ↓X␈↓␈↓ α(CONNECTION␈α
--␈α
a␈α
logical␈α
connection␈α
between␈α
two␈α
processes.␈α Connections␈α
are
␈↓ ↓X␈↓␈↓ αxbidirectional.
␈↓ ↓X␈↓␈↓ α(DATA␈α--␈α
an␈αarbitrary␈α
amount␈αof␈α
data␈αwhich␈α
is␈αeither␈α
used␈αas␈α
arguments␈αin␈α
the
␈↓ ↓X␈↓␈↓ αxHost-Host protocol or as data to be passed to a process utilizing ␈↓↓Dialnet␈↓.
␈↓ ↓X␈↓␈↓ α(DATA␈αCOUNT␈α--␈αa␈α8.-bit␈αquantity␈αindicating␈αhow␈αmany␈αbytes␈αare␈αin␈αthe␈αdata
␈↓ ↓X␈↓␈↓ αx≡eld of the packet after the ≡rst data byte.
␈↓ ↓X␈↓␈↓ α(␈↓↓Dialnet␈↓␈α∀--␈α∀a␈α∀communications␈α∀protocol␈α∀for␈α∀data␈α∀transmission␈α∀over␈α∪standard
␈↓ ↓X␈↓␈↓ αxphone␈α∞lines.␈α∞ This␈α∞term␈α∞also␈α∞refers␈α∞informally␈α∞to␈α∞the␈α∞set␈α∞of␈α∞hosts␈α∞which
␈↓ ↓X␈↓␈↓ αximplement ␈↓↓Dialnet␈↓.
␈↓ ↓X␈↓␈↓ α(EOP␈α--␈αa␈αmarker␈αused␈αto␈αindicate␈αend␈αof␈αpacket.␈α EOP␈αconsists␈αof␈αASCII␈αDLE
␈↓ ↓X␈↓␈↓ αx(220)␈α∞followed␈α∞by␈α
ETX␈α∞(202).␈α∞ It␈α
is␈α∞a␈α∞violation␈α
of␈α∞packet␈α∞framing␈α∞for␈α
a
␈↓ ↓X␈↓␈↓ αxpacket␈α∪to␈α∪end␈α∪with␈α∪anything␈α∪other␈α∪than␈α∪an␈α∪EOP.␈α∪ A␈α∪packet␈α∀is␈α∪not
␈↓ ↓X␈↓␈↓ αxcompletely␈αreceived␈αuntil␈αthis␈αcode␈α
has␈αbeen␈αreceived.␈α Note␈αthat␈α
the␈α200
␈↓ ↓X␈↓␈↓ αxbit must be set for an EOP to be recognized as such.
␈↓ ↓X␈↓␈↓ α(HOST␈α⊗--␈α↔a␈α⊗system␈α⊗with␈α↔␈↓↓Dialnet␈↓-compatible␈α⊗modems␈α↔and␈α⊗␈↓↓Dialnet␈↓-support
␈↓ ↓X␈↓␈↓ αxsoftware which knows the telephone number of at least one other host.
␈↓ ↓X␈↓␈↓ α(HOST-HOST␈α∂PROTOCOL␈α⊂--␈α∂The␈α∂protocol␈α⊂which␈α∂provides␈α⊂for␈α∂compatible
␈↓ ↓X␈↓␈↓ αxcommunication␈α∂between␈α⊂two␈α∂processes␈α⊂running␈α∂on␈α⊂(probably)␈α∂dissimilar
␈↓ ↓X␈↓␈↓ αxhosts.
␈↓ ↓X␈↓␈↓ εI22␈↓ X
␈↓ ↓X␈↓Glossary␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ α(LINE␈α⊃TRANSMISSION␈α⊂PROTOCOL␈α⊃--␈α⊃The␈α⊂protocol␈α⊃which␈α⊃provides␈α⊂for
␈↓ ↓X␈↓␈↓ αxerror␈α
free␈αtransmission␈α
between␈αtwo␈α
hosts␈αwith␈α
a␈αcommon␈α
modem␈αwhich
␈↓ ↓X␈↓␈↓ αxuse the Host-Host protocol.
␈↓ ↓X␈↓␈↓ α(OPCODE -- a ␈↓↓Dialnet␈↓ host-host protocol operation code.
␈↓ ↓X␈↓␈↓ α(PACKET␈α--␈αa␈αlogical␈αunit␈αof␈αdata␈αtransmitted␈αover␈αa␈α␈↓↓Dialnet␈↓␈αlink.␈α The␈αpacket
␈↓ ↓X␈↓␈↓ αxis␈α
the␈α
elementary␈α
unit␈α
of␈α
␈↓↓Dialnet␈↓␈α
transmissions.␈α
A␈α
packet␈α
is␈αbasically␈α
data
␈↓ ↓X␈↓␈↓ αxwith a header and trailer.
␈↓ ↓X␈↓␈↓ α(PACKET␈α⊂FRAMING␈α⊂--␈α⊂a␈α⊃technique␈α⊂used␈α⊂in␈α⊂the␈α⊂line␈α⊃transmission␈α⊂protocol
␈↓ ↓X␈↓␈↓ αxwhich␈α
requires␈αthat␈α
all␈αpackets␈α
start␈αwith␈α
an␈αSOP␈α
marker␈αand␈α
end␈αwith
␈↓ ↓X␈↓␈↓ αxan␈α∃EOP␈α∀marker.␈α∃ A␈α∀packet␈α∃must␈α∃be␈α∀properly␈α∃framed␈α∀for␈α∃it␈α∃to␈α∀be
␈↓ ↓X␈↓␈↓ αxconsidered␈α⊃to␈α⊃have␈α⊃been␈α∩received␈α⊃correctly.␈α⊃ Framing␈α⊃errors␈α∩cause␈α⊃the
␈↓ ↓X␈↓␈↓ αxpacket␈αin␈αprogress␈αand␈αall␈α
succeeding␈αdata␈αto␈αbe␈αdiscarded␈α
until␈αframing
␈↓ ↓X␈↓␈↓ αxis restored.
␈↓ ↓X␈↓␈↓ α(PACKET␈αNUMBER␈α--␈αan␈α8.-bit␈α
quantity␈αwhich␈αuniquely␈αidenti≡es␈αa␈αpacket␈α
at
␈↓ ↓X␈↓␈↓ αxa␈α∂given␈α∂point␈α∞in␈α∂time.␈α∂ This␈α∞is␈α∂used␈α∂to␈α∞identify␈α∂packets␈α∂if␈α∂necessary␈α∞in
␈↓ ↓X␈↓␈↓ αxerror␈α∂recovery.␈α∞ Packet␈α∂numbers␈α∂may␈α∞be␈α∂recycled␈α∞after␈α∂both␈α∂hosts␈α∞have
␈↓ ↓X␈↓␈↓ αxagreed␈α∪that␈α∩the␈α∪packet␈α∩associated␈α∪with␈α∩this␈α∪packet␈α∩number␈α∪has␈α∩been
␈↓ ↓X␈↓␈↓ αxcorrectly sent and received.
␈↓ ↓X␈↓␈↓ α(PROCESS␈α≡--␈α≡an␈α≡entity␈α≡utilizing␈α≡␈↓↓Dialnet␈↓.␈α≡ ␈↓↓Dialnet␈↓␈α≡tra≠c␈α≡consists␈α≥of
␈↓ ↓X␈↓␈↓ αxcommunications between processes.
␈↓ ↓X␈↓␈↓ α(PROCESS␈αID␈α--␈αan␈α8.-byte␈αASCII␈αstring␈αwhich␈αuniquely␈αidenti≡es␈αthe␈αprocess.
␈↓ ↓X␈↓␈↓ αxSee the ICP and higher-level protocols for process-ID conventions.
␈↓ ↓X␈↓␈↓ α(SERVER -- the initially passive process in a connection.
␈↓ ↓X␈↓␈↓ α(SOP␈α--␈αa␈αmarker␈αused␈αto␈αindicate␈αstart␈αof␈αpacket.␈α SOP␈αconsists␈αof␈αASCII␈αDLE
␈↓ ↓X␈↓␈↓ αx(220)␈α∞followed␈α∞by␈α∞STX␈α∞(203).␈α∞ It␈α∞is␈α∞a␈α∞violation␈α∞of␈α∞packet␈α∞framing␈α∞for␈α
a
␈↓ ↓X␈↓␈↓ αxpacket␈α∞to␈α∂begin␈α∞with␈α∞anything␈α∂other␈α∞than␈α∞an␈α∂SOP.␈α∞ Any␈α∂data␈α∞received
␈↓ ↓X␈↓␈↓ αxwhen␈α∂an␈α∂SOP␈α∂is␈α∂expected␈α∂should␈α∞be␈α∂discarded.␈α∂ Note␈α∂that␈α∂the␈α∂200␈α∞bit
␈↓ ↓X␈↓␈↓ αxmust be set for an SOP to be recognized as such.
␈↓ ↓X␈↓␈↓ α(TIMEOUT␈α∞--␈α∞A␈α∞delay␈α∞time␈α∞for␈α
a␈α∞speci≡ed␈α∞action.␈α∞ If␈α∞the␈α∞desired␈α∞action␈α
does
␈↓ ↓X␈↓␈↓ αxnot occur within a speci≡ed time, a "timeout" action is taken.
␈↓ ↓X␈↓␈↓ α(USER -- the initially active process in a connection.
␈↓ ↓X␈↓␈↓ α(WINDOW␈α∪--␈α∪The␈α∪margin␈α∪for␈α∪packets␈α∪vs.␈α∪their␈α∪acknowledgements␈α∀so␈α∪that
␈↓ ↓X␈↓␈↓ αxacknowledgements␈α↔do␈α↔not␈α↔have␈α↔to␈α↔be␈α↔completely␈α_synchronous␈α↔with
␈↓ ↓X␈↓␈↓ αxpackets.
␈↓ ↓X␈↓␈↓ α(WINDOW␈α
SIZE␈α
--␈α
The␈α
maximum␈α
number␈α
of␈α
unacknowledged␈α
packets␈αwhich
␈↓ ↓X␈↓␈↓ εI23␈↓ X
␈↓ ↓X␈↓Glossary␈↓ ¬k␈↓↓Dialnet Protocols␈↓␈↓ nFebruary 10, 1979
␈↓ ↓X␈↓␈↓ αxmay␈α
be␈α∞pending␈α
at␈α
any␈α∞time.␈α
This␈α∞is␈α
similar␈α
to␈α∞what␈α
the␈α∞Arpanet␈α
calls
␈↓ ↓X␈↓␈↓ αx"message allocation".
␈↓ ↓X␈↓␈↓ εI24␈↓ X